import java.util.*;

public class a9 {
    //给定两个字符串 s 和 p，找到 s 中所有 p 的
    //异位词
    // 的子串，返回这些子串的起始索引。不考虑答案输出的顺序。
    public static List<Integer> findAnagrams(String s, String p) {
        int sLength = s.length();
        int pLength = p.length();
        List<Integer> list = new ArrayList<>();
        if(pLength>sLength){
            return list;
        }
        int arrs[] = new int[26];
        int arrp[] = new int[26];
        for (int i = 0; i < pLength; i++) {
            arrs[s.charAt(i) - 'a'] += 1;
            arrp[p.charAt(i) - 'a'] += 1;
        }
        if (Arrays.equals(arrp, arrs)) {
            list.add(0);
        }
        for (int i = 1; pLength + i-1 < sLength; i++) {
            arrs[s.charAt(i-1) - 'a'] -= 1;
            arrs[s.charAt(pLength + i - 1) - 'a'] += 1;
            if (Arrays.equals(arrp, arrs)) {
                list.add(i);
            }
        }

        return list;
    }

    public static void main(String[] args) {
        String s = "cbaebabacd";
        String p = "abc";
        System.out.println(findAnagrams(s, p));
    }
}
